home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Apple Game Sprockets / InputSprocket 1.4 SDK / InputSprocket Release Notes < prev    next >
Encoding:
Text File  |  1998-11-30  |  20.8 KB  |  448 lines  |  [ttro/ttxt]

  1. InputSprocket 1.4f1
  2. Release Notes
  3. -------------------
  4.  
  5.  
  6. For a detailed list of changes from the previous version, please read the
  7. change list at the end of this document.
  8.  
  9. Please report all bugs using the bug reporter on Apple Developer Connection:
  10.  
  11. <http://developer.apple.com/bugreporter/index.html>
  12.  
  13.  
  14. Release Components
  15. ------------------
  16. InputSprocketLib                                   The main InputSprocket library
  17. InputSprocket CH                                   CH Jetstick, CH Flightstick Pro, CH Pro Pedals, CH Pedals, CH F16
  18.                                                                Fighterstick, CH Gamepad, CH Pro Throttle
  19. InputSprocket CH Trackball       support for CH Trackballs
  20. InputSprocket Contour            support for the Contour Mouse
  21. InputSprocket Gravis             Gravis Gamepad, Gravis Firebird, Gravis Mousestick II,      
  22.                                  Gravis Blackhawk
  23. InputSprocket Kensington         Kensington TurboMouse 4.0, TurboMouse 5.0, Thinking Mouse, 
  24.                                  Kensington Mouse, CoStar Stringray trackball
  25. InputSprocket Keyboard           standard Keyboard driver
  26. InputSprocket MacALLY            support for the MacALLY Joystick
  27. InputSprocket Microspeed            support for MacTRAC and MouseDeluxe
  28. InputSprocket Mouse              standard Mouse driver
  29. InputSprocket NoHandsMouse       support for the NoHands mouse
  30. InputSprocket SideWinder 3D Pro        support for SideWinder 3D Pro
  31. InputSprocket Speech                            support for Apple Speech Recognition
  32. InputSprocket Thrustmaster                   Thrustmaster FCS, Thrustmaster WCS, Thrustmaster RCS
  33. InputSprocket USB                                  support for some USB devices on a Mac with USB
  34. USBHIDUniversalModule                           This library is required for the USB support
  35.  
  36. InputSprocketDebugLib                           Debug build of InputSprocket
  37. InputSprocket CH Debug                       Debugging driver
  38. InputSprocket CH TrackballDebug        Debugging driver
  39. InputSprocket Contour Debug                  Debugging driver
  40. InputSprocket Gravis Debug                   Debugging driver
  41. InputSprocket Kensington Debug            Debugging driver
  42. InputSprocket Keyboard Debug              Debugging driver
  43. InputSprocket MacALLY Debug                  Debugging driver
  44. InputSprocket Microspeed Debug            Debugging driver
  45. InputSprocket Mouse Debug                    Debugging driver
  46. InputSprocket NoHandsMouseDebug        Debugging driver
  47. InputSprocket SideWinder Debug            Debugging driver
  48. InputSprocket Speech Debug                   Debugging driver
  49. InputSprocket ThrustmasterDebug        Debugging driver
  50. InputSprocket USB Debug                         Debugging driver
  51. InputSprocket NeedView                          A special debugging driver to show your application's needs.
  52.  
  53.  
  54. InputSprocket AppleJack          AppleJack/ Pippin Controller
  55. InputSprocket ArenaMouse         Extra drivers not part of standard install
  56. InputSprocket AppleJack Debug    Debug build
  57. InputSprocket ArenaMouse Debug   Debug build
  58.  
  59. InputSprocket.h                  Required header for applications.
  60. InputSprocket.r                  Rez templates for appliciations
  61. InputSprocketDriver.h            Required header for drivers
  62. InputSprocketDefer.h             Required header if the driver uses the deer libary
  63. InputSprocketLib                 link libraries
  64. InputSprocketStubLib             link libraries
  65. ISpDeferLib                      link libraries
  66. USBManagerLib                    link libraries
  67. UniversalHIDModule.h             USB headers
  68. USB.h                                                       USB headers
  69.  
  70. Writing an ISp Driver.pdf                    Documentation for building an InputSprocket driver
  71.  
  72. WARNING: don't place both the debugging and non-debugging versions of the
  73. library in the search path or you will not be sure which version you are
  74. using.
  75.  
  76.  
  77.  
  78. Dependencies
  79. ------------
  80.  
  81. InputSprocket requires the latest Universal Headers -- You can find them with the
  82. latest version of your development environment, Apple's WWW and FTP sites or the
  83. developer CD-ROMs.
  84.  
  85. InputSprocket needs a 640x480 display (or larger) in order for its dialog to
  86. work.   If you are asking DrawSprocket for a smaller display size than that you
  87. should switch out before calling InputSprocket.
  88.  
  89.  
  90.  
  91.  
  92. Compatibility with Previous Releases
  93. ------------------------------------
  94.  
  95. InputSprocket 1.4 should be fully compatible with previous releases of InputSprocket.
  96.  
  97.  
  98.  
  99. Changes from 1.3 to 1.4
  100. -----------------------
  101.  
  102. This version adds support for many new USB devices: Saitek Cyborg 3D stick, 
  103. KYE/Genius Joystick and Gamepad, Edge/Rockfire Joysticks (2), and gamepads (3).
  104.  
  105. The need label kISpElementLabel_Btn_PauseResume has been replaced with two
  106. new labels: kISpElementLabel_Btn_Quit and kISpElementLabel_Btn_StartPause.
  107. This is to clarify the purpose and default behavior intended by a need. The
  108. quit need defaults to '<esc>' on the keyboard and can only be changed to
  109. 'Cmd Q'. This need quits an active game, or quits the application entirely.
  110. The start/pause need corresponds to the action that a 'start' button on a 
  111. gamepad would have, which is often pause. Gamepads and other devices with
  112. a button labeled 'start' should default to the start/pause need. On a keyboard,
  113. the start/pause need can be mapped to any key, unlike the quit need.
  114.  
  115. There is a hack to allow calibration of USB devices.  Essentially, the first
  116. time you configure a device, you should roll the controller to the maximum
  117. extents possible.  InputSprocket will memorize the values being returned by
  118. the controller and use these to calibrate it.
  119.  
  120. Changes from 1.2 to 1.3
  121. -----------------------
  122.  
  123. A resource definition file "InputSprocket.r" has been added. You can use this
  124. file to create a Rez '.r' file to build the ISp resources into your
  125. application.
  126.  
  127. One of the templates is for the 'tset' resource created by the ISp keyboard
  128. driver. Note this templete is ONLY valid for a 'tset' generated by the
  129. keyboard. The only way to tell who created the 'tset' is to examine the 'setl'
  130. resource that points to it. The new sample code for DroneZone uses this
  131. template so that the defaults for the keyboard are in a Rez file and are
  132. easily updated when then application's list of needs changes. You still have
  133. recreate the sets for mice and gaming devices when your needs list changes
  134. during development, but not having to re-setup all the keyboard keys every
  135. time should be a big win. (Note: You may have to delete your InputSprocket
  136. Preferences file in order to get the new defaults from the application -- or
  137. change the subCreatorCode passed to ISpInit.)
  138.  
  139. Special thanks to Jeremy Erwin who is not affiliated with MacALLY, for the 
  140. code to support the MacALLY stick.
  141.  
  142. All mice and keyboard drivers are 'passthru' in the debug versions. This
  143. means that it is VERY important you make sure you also test with the release
  144. versions of the drivers, since some things will work fine with the debug
  145. versions but not with the release drivers. On the other hand, you will never
  146. get stuck in the debugger without being able to type and/or move the cursor.
  147.  
  148. InputSprocket resets all elements to 'zero' values (symmetric axis are
  149. reset to the center) across suspend/resume. It is the responsibility of
  150. individual ISp drivers to push data to any elements which are non-default
  151. valued when the driver is reactivated.
  152.  
  153. Many minor bugs have been fixed.
  154.  
  155. 68K support has been added. 68K InputSprocket is only available through
  156. CFM-68K.
  157.  
  158.  
  159.  
  160.  
  161. Changes from 1.1 to 1.2
  162. -----------------------
  163. This release involves many minor improvements to the InputSprocket drivers, 
  164. including an improved user interface (UI) for axis. Some new drivers have 
  165. also been added. Several problems and bugs have been addressed.
  166.  
  167. A new resource has been defined (kISpApplicationResourceType = 'isap') which
  168. all applications which use InputSprocket should put (ID 0) in their resource
  169. fork. They should always set bit 0 (kISpAppResFlag_UsesInputSprocket) and
  170. set bit 1 (kISpAppResFlag_UsesISpInit) if they use the high level API (ie they call
  171. ISpInit, ISpConfig, etc... in other words they have a needs list). The rest of
  172. the bits and reserved fields should be set to 0.
  173.  
  174. A new ISpElementKind has been added: kISpElementKind_Delta which specifies
  175. a Fixed point number of inches moved. InputSprocket Mouse and 
  176. InputSprocket Kensington now register elements of this kind in the low level. 
  177. The high level (through ISpConfigure) supports axis as well as delta kinds.
  178. This kind is very useful if you want to control a cursor.
  179.  
  180. A new definition of ISpNeed can be used by defining USE_OLD_ISPNEED_STRUCT to
  181. 0. The first reserved field (a short) was changed to two UInt8s: playerNum and
  182. group. Use playerNum to tell the driver some needs are related to a particular
  183. player (on the same machine). The SprocketInvaders source code will be reved to
  184. use this field. Group is used to group items together, such as a look up, look
  185. down need (assuming you can't use an axis). You should also group items
  186. together that have the same effect, but are 'tuned' button, axis, and delta versions.
  187. The current ISp drivers do not use this hinting, yet. Some new definitions for the 
  188. ISpNeedFlagBits have been added. If you use the new definition, make sure you 
  189. check your code for cases where you were initializing the struct. You now may 
  190. be misaligned, and many compilers will NOT generate a warning.
  191.  
  192. InputSprocket Mouse supplies pseudo-buttons in the high level for modifier
  193. keys in combination with mouse clicks. You will have at least four buttons
  194. (where some may actually be command/shift/control/option-click on 
  195. one-button mice) for any mouse device. This should make it straightforward
  196. to port games which expect a two button mouse: use ISp with delta and
  197. button needs -- and dont worry about what type of device the user has.
  198.  
  199. InputSprocket Speech added back to distribution (crashing bug fixed)
  200.  
  201. - InputSprocket Gravis supports Blackhawk and uses new UI (new save set format)
  202. - InputSprocket Thrustmaster uses new UI (new save set format)
  203. - InputSprocket Joy completely revised, renamed InputSprocket CH, now supports
  204.   multiple devices seperately and supports up to 8 buttons and 4 hats per device
  205.   (new save set format)
  206. - InputSprocket Kensington added, supports kensington devices regardless of their software
  207. - InputSprocket Sidewinder 3D Pro added, supports Microsoft Sidewinder joystick 
  208. - InputSprocket AppleJack added, supports Pippin/AppleJack controller
  209. - InputSprocket Keyboard supports modifier keys in conjunction with a normal key
  210.   (now either Escape or Cmd-Q are valid for kISpElementLabel_Btn_PauseResume)
  211. - Device and element strings have been reviewed, and some have been changed
  212. - ISpConfigure saves and restores the port.
  213. - A new function: ISpTimeToMicroseconds has been added.
  214. - There are some new bits defined for ISpNeedFlagBits. 
  215. - Some new element labels have been added.
  216. - Old saved sets for devices other than mouse and keyboard do not work
  217.  
  218.  
  219. Known Problems in 1.2
  220. ---------------------
  221. - Kensington Mouse-in-a-box reports two buttons (only the first one works)
  222. - ALPS GlidePoint does not appear if ALPS software is installed (appears w/o
  223.   ALPS software)
  224. - Mouse Systems Mouse does not appear if Mouse Systems software ('3-Button
  225.   Power') is installed (appears as 1 button mouse w/o Mouse Systems software)
  226. - CH Trackball PRO does not appear
  227. - Thrustmaster software generates keyDowns if so configured with ThrustWare
  228. (fix is to configure all buttons to do nothing in ThrustWare)
  229. - Machines based on the Tanzania motherboard (Motorola StarMax, APS MPower,
  230.   Apple PowerMacintosh 4400) will always show an extra Mouse device for the
  231.   PS/2 mouse regardless whether one is plugged in (even though the 4400 has
  232.   no PS/2 ports, the phantom ADB devices for them are still created). The
  233.   PS/2 mouse only reports one button.
  234. - When a Sidewinder 3D Pro stick is connected, an extra mouse device is shown
  235.   which is active when the 'mouse/joystick' switch is switched to 'mouse'.
  236. - It is unstable to have multiple applications use InputSprocket 
  237.   simultaneously. If your application can be suspended and uses InputSprocket 
  238.   you should use ISpShutdown and ISpStartup so that InputSprocket is off while
  239.   you are in the background.  This is a bug (since 1.0) and will be fixed
  240.   in the next version.  If you are a user you can work around this problem
  241.   by not running more than one InputSprocket application at the same time.
  242. - When debugging, you may need to deactivate the Mouse and Keyboard drivers in
  243.   order to be able to interact with your debugger.
  244.  
  245.  
  246.  
  247. Changes from 1.0.2 to 1.1
  248. -------------------------
  249.  
  250. Known Problems in 1.1
  251. ---------------------
  252. - Kensington Trackball does not appear if Kensington software is installed
  253. (appears w/o Kensington software)
  254. - ALPS GlidePoint does not appear if ALPS software is installed (appears w/o
  255. ALPS software)
  256. - Mouse Systems Mouse does not appear if Mouse Systems software ('3-Button
  257. Power') is installed (appears as 1 button mouse w/o Mouse Systems software)
  258. - CoStar Stingray Trackball does not appear if CoStar software ('Stingray') is
  259. installed (appears w/o CoStar software)
  260. - CH Trackball PRO does not appear
  261. - Thrustmaster software generates keyDowns if so configured with ThrustWare
  262. (fix is to configure all buttons to do nothing in ThrustWare)
  263.  
  264. Changes from 1.02
  265. -----------------
  266. - new APIs (ISpStartup, ISpShutdown, ISpTickle, ISpDevices_ActivateClass,
  267.         ISpDevices_DeactivateClass)
  268. - some general UI improvements in both appearance and performance have been
  269. made
  270. - new driver InputSprocket Joy (supports some features of JoyManager devices --
  271. ie mainly CH products)
  272. - new driver InputSprocket Thrustmaster (supports FCS, WCS, RCS)
  273. - new driver InputSprocket Gravis (supports MouseStick, Firebird, GamePad)
  274. - new driver InputSprocket Speech (you must activate explicitly and requires
  275. ISpTickle be called)
  276. - InputSprocket Mouse changed to have new UI and is implemented via ADBMgr
  277. directly instead of a CursorDeviceMgr Patch
  278. - InputSprocket Keyboard has been slightly changed if there is only one page
  279. - driver function to plot icons has been changed (faster)
  280. - bug when you select a 0 length name to save a set has been fixed
  281. - bug involving choosing monitor has been fixed (might chose something other
  282. than the main monitor randomly)
  283. - CH Flightstick, CH Gamepad, CH Jetstick and MacEnjoy no longer generate a
  284. mouse device
  285. - a crashing bug involving multiple applications using input sprocket
  286. simultaniously has been fixed
  287. - a very small memory leak involving ISpConfigure has been fixed
  288. - DONT_USE_OLD_INPUT_SPROCKET_LABELS changed to USE_OLD_INPUT_SPROCKET_LABELS
  289. in InputSprocket.h
  290. - a bug where InputSprocket Keyboard and InputSprocket Mouse called InitGraf
  291. has been fixed
  292.  
  293. Other notes:
  294. - you must call ISpTickle in order for InputSprocket Speech to work
  295. - you must call ISpDevices_ActivateClass(kISpDeviceClass_SpeechRecognition) to
  296. turn InputSprocket Speech on
  297. - requires SpeechRecognition extension 1.5.1 (PlainTalk 1.5)
  298.  
  299.  
  300. InputSprocket Joy Notes
  301. -----------------------
  302. - supports all JoyManager devices as a single input sprocket device.
  303. - UI may show popups for controls the device does not have
  304. - JoySimpleData based
  305. - only supports the trigger and three additional buttons
  306. - digital pointing devices (ex. CH Gamepad's pad) are treated as a pair of axis
  307. not a POV Hat
  308.  
  309.  
  310.  
  311. Changes from 1.0 and 1.0.2 Release Notes
  312. ----------------------------------------
  313.  
  314.  
  315. There is a new InputSprocket.h that has new versions of the names for the
  316. labels as well as additional labels.
  317.  
  318. The following bugs were fixed in the 1.01 or the 1.02 releases.
  319. - keyboard UI now generates better names than Min/Max for axis if ElementLabel
  320. is useful
  321. - various problems with alignment and growing of dialog were fixed
  322. - flickering with icons in thrustmaster and mouse fixed
  323. - stub library included in this release with file type 'stub'
  324. - axis flipping check box now works again for the mouse driver
  325. - ISpDevices_Extract functions no work when an exact count is passed to them
  326. - Icon plotting is more robust.
  327. - The OK button is no longer hilited when the keyboard is active.
  328. - InputSprocket will now unload the drivers when the last fragment is unloaded
  329. - InputSprocket no longer leaks memory when you quit in the suspended state
  330. - when there are no devices to configure and ISpConfigure is called it will
  331. display a warning instead of doing nothing
  332. - ISpSuspend no longer leaks 10,000 bytes every call
  333.  
  334. The following bugs are known:
  335. -There is an incompatability with the mouse driver and the Kensignton trackball
  336. software that causes no mice devices to appear.
  337. -There is a incompatability with the Kensington trackball that causes an extra
  338. mouse device to appear when the hardware is installed and the software is not
  339. installed.
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347. InputSprocket Clarifications and Guidelines
  348. -------------------------------------------
  349.  
  350. Although not a change, a clarification is needed on how exclusive items operate
  351. particularly with regards to hat-type switches (direction-pads, digital
  352. joysticks and hat switches). A group of mutually exclusive items is a group of
  353. items where activation of one item automatically deactivates other items in the
  354. group. A group of mutually exclusive items might be assigned to a hat. An
  355. example is "look" functionality which allows the user to different directions
  356. from the cockpit in a flight simulator implemented as four different button
  357. needs. A problem will arise if the group of items only uses the activation of
  358. these buttons to select which item is active. This problem will only arise if
  359. the program in question does not properly handle combinations of the button
  360. activations.
  361.  
  362. For example, if I assign "look right" to the right item of a hat and "look
  363. forward" to the top item of a hat. Now, if I press right on the hat I will look
  364. right. If I now wiggle my thumb upwards so that up is activated (up and right
  365. are now simultaneously activated) I will look forward. If I slide my thumb back
  366. to the right, I will release the "look up" item, but since the "look right"
  367. item was activated the whole time, I do not reactivate the "look right"
  368. function. I now have my thumb holding the hat right, but I am looking forward.
  369.  
  370. In fact, since the "look right" item is already held down, it is the ONLY
  371. button on the entire controller which cannot be pressed and it becomes
  372. impossible to look right without releasing the hat and pressing it right again.
  373. Symptoms of this are that it is easier to look right by pressing forward and
  374. sliding right to the corner of the d-pad than it is to press right directly!
  375.  
  376. The only way to correct for this is to consider both presses (kISpButtonDown)
  377. and releases (kISpButtonUp) of any button needs which are exclusive. In this
  378. case, when right is pressed, the right function would be activated. When the up
  379. function is activated, both items are now activated. The InputSprocket client
  380. can either deactivate the original right function and switch to the up
  381. function, or it can remain with the right function and only switch to the up
  382. function when the right button is released. If the hat is moved to the right
  383. again and the up function is released, then the client should switch back to
  384. the right function if it has switched away.
  385.  
  386. Proper handling of releases of button needs will allow mutually exclusive
  387. functions to operate properly.
  388.  
  389.  
  390.  
  391.  
  392. Before you ship any application, check to make sure you get no warnings when
  393. running with InputSprocketDebugLib and the debug versions of the drivers.
  394.  
  395. We recommend that if you are using InputSprocket version greater than 1.02
  396. that you no longer support any third party joystick APIs.  You must not support
  397. those APIs at the same time as you have InputSprocket devices enabled.
  398.  
  399. If you are using InputSprocket via the high level (ISpConfigure and ISpInit and
  400. so on), We recommend that you only use the axis and button data types and
  401. build the controls that you need out of those types.  This will get you the best
  402. support.  Many of the drivers are going to only primarily emulate those
  403. datatypes.
  404.     
  405. Your game may provide default and optional configurations for the
  406. keyboard, the mouse and any other devices.  This is done by including
  407. 'setl' and 'tset' resources a resource file, such as the application's,
  408. that is open when ISpInit and ISpConfigure are called.  Since the
  409. format of the 'tset' resource is determined by the device, it is
  410. easiest to use the configuration dialog to establish the desired
  411. configurations then copy them from the Preferences file into your
  412. resource file.
  413.         
  414.     1.    Remove the InputSprocket Preferences file from the Preferences
  415.                 folder.
  416.             
  417.     2.    Run your game, and invoke the ISpConfigure dialog.
  418.             
  419.     3.    Configure and save as many sets as you like for any and all
  420.                 devices.
  421.             
  422.     4.    Quit.
  423.             
  424.     5.    Use ResEdit to move the 'setl' and 'tset' resources to your
  425.           resource file.
  426.             
  427.     6.    Edit the 'setl' resource using the 'TMPL' supplied in
  428.                 InputSprocketSimpleTest.rsrc.
  429.             
  430.     7.    Change the flags field to $00000002 for the default entry for
  431.           a given device or $00000004 for any other entry for that
  432.           device.
  433.             
  434.     8.    Again remove the InputSprocket Preferences file from the
  435.           Preferences folder so you can test with a clean slate.
  436.             
  437.     9.    Rebuild your game and try out your new configurations.
  438.             
  439.             
  440. Alternatively, Rez templates are now provided for all InputSprocket resources.
  441.     
  442.  
  443.  
  444.  
  445. ISp drivers must insure that they are VM safe. ADB drivers can link to 
  446. InputSprocketDeferLib to insure their ADB handlers are executed at a time
  447. where it is safe to page. The new sample ADB driver does this.
  448.